import javax.swing.JOptionPane;
/**
 * Classe que representa uma lista de transições
 */
public class ListaTransicoes {
    
    private Transicoes[] transitions;
    private int quant; 
    
    /**
     * Construtor sem parametros que instancia uma array de transições de tamanho 10
     */
    public ListaTransicoes(){
        transitions = new Transicoes[10];
        quant = 0;
    }
    /**
     * Adiciona um nova transição 
     * @param t transicao
     * @return true se for adicionado com sucesso no arranjo
     */
    public boolean addTransition(Transicoes t){
        transitions[quant] = t;
        quant++;
        return true;
    }
    /**
     * Remove uma transição do arranjo e decrementa a quantidade de transições
     * @param id identificação
     * @return False se quantidade for igual a 0 ou identificação maior que quantidade,
     * True se a remoção obtiver sucesso
     */
    public boolean removerTransition(int id){
        if(quant == 0 || id > quant){
            return false;
        }
        
        for (int i = id; i < quant-1; i++) {
            transitions[i] = transitions[i+1];            
        }
        quant--;
        return true;
    }
    /**
     * Verifica a quantidade de transições
     * @return False se for igual a 0 senão seta a variavel para 0 e retorna True
     */
    public boolean removerTodas(){
        if(quant == 0)
            return false;
        
        quant = 0;
        return true;
    }
    /**
     * Retorna a transição
     * @param id identificação
     * @return Retorna o Objeto Transições
     */
    public Transicoes getTransition(int id){
        return transitions[id];
    }
    
    /**
     * Retorna o simbolo de leitura da transição
     * @param id identificação
     * @return Simbolo da transição
     */
    public char getLeitura(int id){
        return transitions[id].getSimbolo();
    }
    /**
     * Retorna a Quantidade de transições
     * @return quantidade
     */
    public int getQuant(){
        return quant;
    }
    /**
     * Percorre a lista de transições e adiciona a uma estancia da classe StringBuilder (String mutavel) 
     * Exibindo posteriormente em uma Caixa de dialogo
     */
    public void listarTransitions(){
        StringBuilder s = new StringBuilder();
        for (int i = 0; i < quant; i++) {
            s.append(i+"- ");
            //System.out.print("Destino: " + transitions[i].getDestino());
            s.append("Destino: " + transitions[i].getDestino());
            //System.out.print(" Leitura: " + transitions[i].getSimbolo());
            s.append(" Leitura: " + transitions[i].getSimbolo());
            //System.out.print(" Gravar :" + transitions[i].getSimbGravar());
            s.append(" Gravar :" + transitions[i].getSimbGravar());
            //System.out.println(" Movimento: " + transitions[i].getMovimento()); 
            s.append(" Movimento: " + transitions[i].getMovimento());
            s.append("\n");
        }
        JOptionPane.showMessageDialog(null, s);
    }
    
}
